
package br.com.rumus.mb.seguranca;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.primefaces.model.DualListModel;

import br.com.rumus.dao.seguranca.PerfilDAO;
import br.com.rumus.dominio.seguranca.Perfil;
import br.com.rumus.dominio.seguranca.Usuario;
import br.com.rumus.facade.FacadeSeguranca;

@ManagedBean(name="editarUsuario")
@ViewScoped
public class EditarUsuarioBean {

	private FacadeSeguranca facade = new FacadeSeguranca();
	private Usuario objeto;
	
	private DualListModel<Perfil> perfis;
	
	public DualListModel<Perfil> getPerfis() {
		if(perfis==null){
			List<Perfil> fonte = new ArrayList<Perfil>();  
	        List<Perfil> alvo = new ArrayList<Perfil>();
	        if(this.objeto.getPerfis()!=null){
	        	for( Perfil perfil : this.objeto.getPerfis() ){	
		        	alvo.add(perfil);
		        }
	        }
	        
	        for( Perfil perfil : facade.perfis() ){
	        	if(!alvo.contains(perfil)){
	        		fonte.add(perfil);
	        	}
	        	
	        }
	        
	        this.perfis = new DualListModel<Perfil>(fonte, alvo);  
		}
		return perfis;
	}

	public void setPerfis(DualListModel<Perfil> perfis) {
		this.perfis = perfis;
	}

	public Usuario getObjeto() {
		if(this.objeto==null){
			this.objeto = new Usuario();
		} else if(this.objeto!=null&&this.objeto.getId()!=null){
			this.objeto = (Usuario)facade.buscar(this.objeto);
		}
		return objeto;
	}

	public void setObjeto(Usuario objeto) {
		this.objeto = objeto;
	}

	public String incluir(){
		this.objeto.setPerfis(this.perfis.getTarget());
		facade.inserir(this.objeto);
		return "/seguranca/usuario/listar.faces";
	}
	
	public String atualizar(){
		this.objeto.setPerfis(this.perfis.getTarget());
		facade.alterar(this.objeto);
		return "/seguranca/usuario/listar.faces";
	}
	
	public String cancelar(){
		return "/seguranca/usuario/listar.faces";
	}
	
	public String remover(){
		return "/seguranca/usuario/listar.faces";
	}
	
}